home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Ubuntu 9.10 PL / karmelkowy-koliberek-desktop-9.10-i386-PL.iso / casper / filesystem.squashfs / usr / sbin / foomatic-fix-xml < prev    next >
Text File  |  2009-09-18  |  2KB  |  59 lines

  1. #!/usr/bin/perl
  2.  
  3. # This is foomatic-fix-xml, run this program if you have compiled
  4. # foomatic-perl-data against libxml 1.x and you have old database
  5. # entries with a leading blank line. libxml 1.x chokes on leading
  6. # blank lines.
  7.  
  8. my $libdir;
  9. if ($#ARGV > -1) {
  10.     if ($ARGV[0] eq "-h") {
  11.     print STDERR "
  12. Usage: foomatic-fix-xml [ dir ]
  13.  
  14.        dir: Directory where the Foomatic database is located, default:
  15.             /usr/share/foomatic
  16.  
  17. ";
  18.     exit(1);
  19.     } else {
  20.     $libdir = $ARGV[0];
  21.     }
  22. } else {
  23.     $libdir = "/usr/share/foomatic";
  24. }
  25.  
  26. # A little bit of statistics
  27. my $filesmodified = 0;
  28.  
  29. # Read the directory with the driver's XML entries
  30. for my $dir (qw/printer driver opt/) {
  31.     opendir DIR, "$libdir/db/source/$dir" ||
  32.     die "Cannot open driver XML directory!\n";
  33.     my $file;
  34.     while ($file = readdir(DIR)) {
  35.     next if ($file !~ /.xml$/);
  36.     open XMLFILE, "< $libdir/db/source/$dir/$file" || die "   Database entry $file cannot be read!\n";
  37.     my @contents = <XMLFILE>;
  38.     close XMLFILE;
  39.     my $filemodified = 0;
  40.     while ($contents[0] =~ /^\s*$/) {
  41.         shift @contents;
  42.         $filemodified = 1;
  43.     }
  44.     if ($contents[0] !~ /^</) {
  45.         $contents[0] =~ s/^\s*</</;
  46.         $filemodified = 1;
  47.     }
  48.     if ($filemodified) {
  49.         open XMLFILE, "> $libdir/db/source/$dir/$file" || die "   Database entry $file cannot be written!\n";
  50.         print XMLFILE join('', @contents);
  51.         close XMLFILE;
  52.         print "Corrected file $libdir/db/source/$dir/$file\n";
  53.         $filesmodified ++;
  54.     }
  55.     }
  56. }
  57. closedir DIR;
  58. print "\nCorrected $filesmodified files.\n\n";
  59.